perm filename PTEST.DOC[TEX,ALS] blob sn#613092 filedate 1981-09-22 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	{{\def\dispentry#1#2{{}
C00004 00003	program YIELD(OUTPUT)
C00005 00004	procedure PrintOctal(n: integer) {{ Prints the rightmost 32 bits }}
C00008 ENDMK
C⊗;
{{\def\dispentry#1#2{{}
	\spaceskip 3.333pt plus 10pt minus 2pt
	\xspaceskip 4.444pt plus 11pt minus 3pt
	\parindent 0pt
	$$\hbox par 11cm{\hangindent 3cm after 1\hbox to 3cm{#1\hfil\quad}#2}
	$$
	\parindent 20pt
	}

\def\dispar#1\par{{}
	\spaceskip 3.333pt plus 10pt minus 2pt
	\xspaceskip 4.444pt plus 11pt minus 3pt
	\parindent 0pt
	$$\hbox par 10cm{#1}
	$$\par
	\parindent 20pt
	}
\def\hide#1{\hbox to 0pt{\hss#1}}
\def\α{\hide{-}\ }
\def\β{\hide{$\bullet$}\ }
\def\runningrighthead#1{\gdef\chead{\:m#1}} %\runningrighthead sets chead
\def\textindent#1{\noindent\hbox to 30pt{\hss#1\ }\!}
\def\¬{\par\penalty-100\vskip 5pt plus 2pt minus 2pt
		\hangindent 30pt\textindent{$\bullet$}}
\advcount0

\secbegin \head{The PrintOctal program} \runninglefthead{PrintOctal}
PrintOctal is a test program to make sure that the new PrintOctal procedure
actually works as advertized.\par

(* PrintOctal STANFORD CS September 16 1981.
PrintOctal was programmed by A.L.Samuel *)}}
program YIELD(OUTPUT);
   var  BRACKET,YIELD: integer;
   begin
   writeln('Break even Bracket in terms of current yield');
   writeln('current   Tax');
   writeln('yield   bracket');
   for YIELD:=13 to 30 do
      begin BRACKET :=100 -(1260 div YIELD);
      if BRACKET <= 50 then writeln(YIELD:3,BRACKET:9);
      end;
   end.
procedure PrintOctal(n: integer); {{ Prints the rightmost 32 bits }}

var i: integer;
    k: integer;
    s: array [0..10] of asciiCode;
    msb: boolean;
    mbb: boolean;
begin
msb:=false;
mbb:=false;
if n<0 then begin n:=-n; msb:=true end; 
for k:=10 downto 0 do
    begin
    i:=n mod 8;
    if k=0 then
	begin
	if msb then
	    begin
	    if i>3 then i:=7-i	{{ must be a 36 bit word }}
	    else
	        begin 
	        if (i mod 2)=0 then i:=3 else i:=2   {{ should be ok }}
		end
	    end
	else i:=(i mod 4)
	end
    else
	begin
	if msb=true then
	    begin
	    if mbb=true then i:= 7-i 	{{ a borrow has propagated }}
	    else
		begin
		if i>0 then
		    begin
		    i:=8-i;
		    mbb:=true;              {{ a borrow required }}
		    end
		end
	    end;
	end;

      case i of
	0: s[k]:=zero;
	1: s[k]:=one;
	2: s[k]:=two;
	3: s[k]:=three;
	4: s[k]:=four;
	5: s[k]:=five;
	6: s[k]:=six;
	7: s[k]:=seven
      end;
    n:= n div 8;
    end;
Print(''''');
k:=0; while (k<10) and (s[k]=zero) do Increment(k);
for k:=k to 10 do Print(s[k])
end;

{{\head{Maincontrol}\par
Computes FIB numbers and their squares and calls Printoctal }}

procedure maincontrol;  {{ Computes FIB numbers and their squares and
				     calls Printint and PrintOctal. }}
var fiba: integer;
    fibb: integer;
    fibc: integer;
    fibs: integer;
    k: integer;

begin
fiba:=0;
fibb:=1;
for k:=1 to 100 do
    begin
    fibc:=fiba+fibb;
    fibs:=fibc*fibc;
    println('' '');
    printint(fibs);
    println('' '');
    printoctal(fibs);
    println('' '');
    fibs:=-fibs;
    printoctal(fibs);
    fiba:=fibb;
    fibb:=fibc;
    end;
end;


begin
maincontrol;
end.